home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-04-20 | 3.5 KB | 159 lines | [TEXT/PJMM] |
- unit PrefsGlobals;
-
- { This program was written by Peter N Lewis, Mar 1992 in THINK Pascal 4.0.1 }
-
- interface
-
- const
- prefs_version = $0100;
- prefsCreator = 'tALK';
- prefsType = 'Talk';
- prefsResType = 'PREF';
- prefsResID = 128;
- prefsStrhResID = 128;
- prefsNameStrhIndex = 1;
- prefsFinderCommentStrhIndex = 2;
-
- type
- prefsRecord = record
- version: integer;
- allowconnect: (AC_Talkd, AC_Talk, AC_never);
- notify_alert: boolean;
- notify_beep: boolean;
- notify_flash: boolean;
- show_status: boolean;
- auto_talk: boolean;
- close_status: boolean;
- reply_if_idle: boolean;
- answer_to_anyname: boolean;
- type_in_bottom_pane: boolean;
- no_return_delete: boolean;
- dummy: array[14..20] of signedByte;
- usernames: str255;
- end;
-
- var
- prefs: prefsRecord;
-
- procedure ValidatePrefs (var prefs: prefsRecord);
- procedure ValidateUserNames (var s: str255);
- function ValidUserNames (s: str255): boolean;
- function GetMyUserName (var prefs: prefsRecord): str255;
- function ValidUserName (s: str255; var prefs: prefsRecord): boolean;
-
- implementation
-
- uses
- MyTypes;
-
- procedure SimpleValidateUserNames (var s: str255);
- var
- t: str255;
- i: integer;
- begin
- for i := 1 to length(s) do
- if not (s[i] in ['a'..'z', 'A'..'Z', '_', '1'..'9']) then
- s[i] := spc;
- t := '';
- i := 1;
- while (i <= length(s)) & (s[i] = spc) do
- i := i + 1;
- while i <= length(s) do begin
- while (i <= length(s)) & (s[i] <> spc) do begin
- t := concat(t, s[i]);
- i := i + 1;
- end;
- if i <= length(s) then
- t := concat(t, ',', spc);
- while (i <= length(s)) & (s[i] = spc) do
- i := i + 1;
- end;
- s := t;
- end;
-
- function ValidUserNames (s: str255): boolean;
- var
- t: str255;
- i, j: integer;
- begin
- SimpleValidateUserNames(s);
- ValidUserNames := s <> '';
- end;
-
- procedure ValidateUserNames (var s: str255);
- var
- sh: stringHandle;
- i: integer;
- begin
- SimpleValidateUserNames(s);
- if s = '' then begin
- sh := GetString(-16096);
- if sh = nil then
- sh := GetString(-16413);
- if sh <> nil then begin
- s := sh^^;
- ReleaseResource(handle(sh));
- SimpleValidateUserNames(s);
- end;
- end;
- if s = '' then
- s := 'macintosh'; { I give up! }
- for i := 1 to length(s) do
- if s[i] in ['A'..'Z'] then
- s[i] := chr(ord(s[i]) + $20);
- end;
-
- function GetMyUserName (var prefs: prefsRecord): str255;
- var
- p: integer;
- begin
- p := Pos(',', prefs.usernames);
- if p = 0 then
- GetMyUserName := prefs.usernames
- else
- GetMyUserName := copy(prefs.usernames, 1, p - 1);
- end;
-
- procedure ValidatePrefs (var prefs: prefsRecord);
- var
- i: integer;
- begin
- with prefs do begin
- if version <> prefs_version then begin
- version := prefs_version;
- allowconnect := AC_talkd;
- notify_alert := false;
- notify_beep := true;
- notify_flash := true;
- show_status := true;
- auto_talk := false;
- close_status := false;
- reply_if_idle := false;
- answer_to_anyname := true;
- type_in_bottom_pane := false;
- no_return_delete := false;
- usernames := '';
- end;
- for i := 14 to 20 do
- dummy[i] := 0;
- ValidateUserNames(usernames);
- end;
- end;
-
- function ValidUserName (s: str255; var prefs: prefsRecord): boolean;
- var
- i: integer;
- begin
- with prefs do begin
- if answer_to_anyname then
- ValidUserName := true
- else begin
- for i := 1 to length(s) do
- if ('A' <= s[i]) and (s[i] <= 'Z') then
- s[i] := chr(ord(s[i]) + $20);
- ValidUserName := (s = usernames) or (Pos(concat(s, ','), usernames) <> 0) or (Pos(concat(', ', s), usernames) <> 0);
- end;
- end;
- end;
-
- end.